package xyc.szk.utils;
/*
 * @Description:
 * @Author: 山志凯
 * @Date: 2021-06-09
 * @Time: 08:29
 */

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import xyc.szk.pojo.Department;
import xyc.szk.pojo.Users;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class DbUtils {
    private static QueryRunner qr=new QueryRunner(JdbcUtils3.getDataSource()); //它是线程安全的

    /**
     * 查询一个用户到一个Users类型的javabean中
     * @param sql 操作的sql语句
     * @param args sql所需要的参数
     * @return 返回的是一个Users类型的对象
     * @throws SQLException
     */
    public static Department find1(String sql, Object... args) throws SQLException {  //可变参数
        Department department=qr.query(sql, new BeanHandler<Department>(Department.class), args);
        /*qr.query(sql, (ResultSetHandler<Object>) rs -> {
            //将rs转换成一个users类的javabean
            return user;
        });*/
        //attitude to everything
        return department;
    }
    public static Users find(String sql,Object... args) throws SQLException {  //可变参数
        Users user=qr.query(sql, new BeanHandler<>(Users.class), args);
        /*qr.query(sql, (ResultSetHandler<Object>) rs -> {
            //将rs转换成一个users类的javabean
            return user;
        });*/
        //attitude to everything
        return user;
    }

    /**
     * 查询所有的用户到一个list集合中，集合中的每一个元素类型为Users类型
     * @param sql 操作的sql语句
     * @param args sql所需要的参数
     * @return 返回的是一个list集合
     * @throws SQLException
     */
    public static List<Users> findAll(String sql,Object... args) throws SQLException {  //可变参数
        List<Users> list=new ArrayList();
        list=qr.query(sql, new BeanListHandler<Users>(Users.class), args);
        /*qr.query(sql, (ResultSetHandler<Object>) rs -> {
            //将rs转换成一个users类的javabean
            return user;
        });*/
        return list;
    }

    /**
     * 添加， 修改，删除操作
     * @param sql 操作的sql语句
     * @param args sql所需要的参数
     * @return count sql执行后影响的行数
     * @throws SQLException
     */
    public static int update(String sql,Object... args) throws SQLException {
        return qr.update(sql,args);
    }
   /* //添加操作
    public int insert(String sql,Object... args) throws SQLException {
        return qr.update(sql,args);
    }
    //更新操作
    public int update(String sql,Object... args) throws SQLException {
        return qr.update(sql,args);
    }
    //删除操作
    public int delete(String sql,Object... args) throws SQLException {
        return qr.update(sql,args);
    }*/
}
